package cn.itcast.service;

import cn.itcast.result.PageBean;
import cn.itheima.sys.dto.EmployeeDTO;
import cn.itheima.sys.dto.EmployeeLoginDTO;
import cn.itheima.sys.dto.EmployeePageQueryDTO;
import cn.itheima.sys.dto.PasswordEditDTO;
import cn.itheima.sys.vo.EmployeeLoginVO;
import cn.itheima.sys.vo.EmployeeVO;

import java.util.List;

public interface EmployeeService {
    /**
     * 分页查询
     *
     * @param condition 分页及自定义条件
     * @return 员工列表
     */
    PageBean pageList(EmployeePageQueryDTO condition);

    /**
     * 获取员工列表
     *
     * @return 所有员工
     */
    List<EmployeeVO> list();

    /**
     * 新增员工
     *
     * @param emp 员工信息
     */
    void add(EmployeeDTO emp);

    /**
     * 修改员工
     *
     * @param emp 员工信息
     */
    void update(EmployeeDTO emp);

    /**
     * 根据id查询员工
     *
     * @param id 员工id
     * @return 员工信息
     */
    EmployeeVO getById(Long id);

    /**
     * 根据id删除员工
     *
     * @param id 员工id
     */
    void deleteById(Long id);

    /**
     * 员工登录
     *
     * @param employeeLoginDTO 登录参数
     * @return 用户的jwt信息
     */
    EmployeeLoginVO login(EmployeeLoginDTO employeeLoginDTO);

    /**
     * 启用、禁用员工账号
     *
     * @param status 状态
     * @param id     要操作的员工id
     */
    void updateStatus(Integer status, Long id);

    /**
     * 修改密码
     *
     * @param passwordEditDTO 修改密码
     */
    void editPassword(PasswordEditDTO passwordEditDTO);
}
